#include <head.h>

/*
缓冲区的刷新方式
    1.行缓存刷新方式
    2.全缓存刷新方式
*/
int main(int argc ,const char *argv[])
{
    //行缓存
//1.行缓存遇到换行符会刷新缓冲区
    //printf("1111111\n");
    //while(1);

//2.调用fclose的时候会刷新行缓存
    //printf("11111111");
    //fclose(stdout);
    //while(1);

//3.当程序结束的时候会刷新行缓存
    //printf("11111111111");

//4.当输入输出发生切换的时候会刷新行缓存
    //printf("1111111111");
    //int num;
    //scanf("%d",&num);
    //while(1);

//5.当行缓冲缓冲区满也会刷新行缓存
    //for(int i=0;i<1025;i++)
    //{
    //    fputc('a',stdout);
    //}
    //while(1);

//6.使用fflush刷新缓冲区
    //printf("1111111111");
    //if(fflush(stdout))//刷新缓冲区的函数,成功返回0，失败返回EOF，置位错误码
    //    FOPEN_ERR("fflush error");
    //while(1);


    //全缓存
    FILE *fp;
    if(fp = fopen("./hello.txt","w+"))
        FOPEN_ERR("fopen error");
//1.全缓存遇到换行符不会刷新缓冲区
    //fputc('s',fp);
    //fputc('\n',fp);
    //while(1);

//2.调用fclose的时候会刷新全缓存
    //fputc('s',fp);
    //fclose(fp);
    //while(1);

//3.当程序结束的时候会刷新全缓存
    //fputc('y',fp);

//4.当输入输出发生切换的时候会刷新全缓存
    //fputc('q',fp);
    //fgetc(fp);
    //while(1);

//5.当行缓冲缓冲区满也会刷新全缓存
    //for(int i=0;i<4097;i++)
    //{
    //    fputc('a',fp);
    //}
    //while(1);

//6.使用fflush刷新缓冲区
    //fputc('n',fp);
    //if(fflush(fp))//刷新缓冲区的函数,成功返回0，失败返回EOF，置位错误码
    //    FOPEN_ERR("fflush error");
    //while(1);
    return 0;
}